;
((function() {
    var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1, // 浏览器是否是chrome内核
        username = $('[name="username"]'), // 用户名输入框
        password = $('[name="password"]'), // 密码输入框
        subBtn = $('#sub-btn'), // 登录按钮
        errorInfo = $('.error-info'),
        vContainer = null, // 验证码显示区域
        verifyItem = null, // 验证码div容器
        verifyCode = null, // 验证码输入框
        canvas = document.getElementById('hw-canvas')

    var deadTime = window.localStorage.getItem('deadTime'); // 上次验证码出现的时间
    var currentTiem = +new Date();

    // 如果事件超过一天， 清除
    if (!deadTime || currentTiem >= +deadTime + 24 * 60 * 60 * 1000) {
        localStorage.clear()
    }


    // 判端是否是chrome浏览器
    if (!isChrome) alert('为了更好的用户体验，请使用chrome浏览器');

    /**
     *  ajax登录前验证，同一用户名多次登录失败之后，需要填写验证码
     */
    function Login() {
        var data = {
            username: $.trim(username.val()),
            password: $.trim(password.val())
        };

        // 用户吗不能为空
        if (data.username == '') {
            username.focus();
            return errorInfo.text('用户名不能为空').data('elem', 'username');
        }

        // 密码不能为空
        if (data.password == '') {
            password.focus();
            return errorInfo.text('密码不能为空').data('elem', 'password');
        }

        // 同一用户名面膜输错三次，需输入验证码
        if (verifyTimes(data.username)) {
            if (!verifyCode) verifyCode = $('#verify-code');
            if (verifyCode.val() == '') {
                verifyCode.focus();
                return errorInfo.text('请输入验证码').data('elem', 'verify-code');
            }

            var res = vContainer.validate(verifyCode.val());
            if (res) {
                ajaxLogin(data);
            } else {
                errorInfo.text("验证码错误");
            }
        } else {
            ajaxLogin(data);
        }
    }

    /**
     * ajax提交用户名密码
     * @param  {[object]} data [用户名]
     * @return {[type]}      [description]
     */
    function ajaxLogin(data) {
        data.password = md5(data.password);
        $.ajax({
            url: '',
            type: 'POST',
            timeout: 10000,
            dataType: 'json',
            data: data,
            success: function(json) {
                if (json.code == 1) {
                    window.localStorage.removeItem('errorTimes');
                    window.location.href = json.url;
                } else {
                    errorInfo.text(json.msg);
                    // var times = window.localStorage.getItem(data.username) || 0;
                    // times = +times; // 字符串转换为数字
                    // window.localStorage.setItem(data.username, times+1); 

                    var times = window.localStorage.getItem('errorTimes') || 0;
                    times = +times; // 字符串转换为数字
                    window.localStorage.setItem('errorTimes', times + 1);
                    window.localStorage.setItem('deadTime', +new Date());

                    if (vContainer) {
                        vContainer.refresh();
                    }
                }
            },
            error: function() {
                errorInfo.text('用户名或密码错误');
                // var times = window.localStorage.getItem(data.username) || 0;
                var times = window.localStorage.getItem('errorTimes') || 0;
                times = +times; // 字符串转换为数字
                
                // window.localStorage.setItem(data.username, times+1);  

                window.localStorage.setItem('errorTimes', times + 1);
                window.localStorage.setItem('deadTime', +new Date());

                if (vContainer) {
                    vContainer.refresh();
                }
            }
        });
    }

    /**
     * 验证同一用户名密码输入次数
     * @param  {[string]} name [用户名]
     * @return {[boolean]}     [true => 输入次数超限需要验证码]
     */
    function verifyTimes(name) {
        if (!canvas.getContext) return false; // 浏览器不支持canvas，直接返回true

        // var times = window.localStorage.getItem(name) || 0;
        var times = window.localStorage.getItem('errorTimes') || 0;

        // 判断用户名的密码输入的次数
        if (times >= 3) {
            if (!verifyItem) verifyItem = $('#verify-item');
            verifyItem.removeClass('hide');
            if (!vContainer) {
                vContainer = new GVerify("v-container");
            }
            return true;
        }

        return false;
    }

    // 登录按钮绑定点击事件
    subBtn.on('click', function() {
        Login();
    });

    document.onkeydown = function(e) {
        var ev = document.all ? window.event : e;
        if (ev.keyCode == 13) {
            Login();
        }
    }

    // input聚焦之后， 隐藏错误提示， 
    $('.login-form').on('input', 'input', function() {
        if (this.id == errorInfo.data('elem')) {
            errorInfo.text('');
        }
    });
})())